In vehicle systems, numerous sensors are employed to monitor operating parameters such as current, speed, angle, linear position, and rotational direction of an article associated with a control module, such as a power steering module, a fuel injection module, an anti-lock brake module, etc, The sensor output signals are provided over a communications bus to a system controller, such as an Electronic/Engine Control Unit (ECU) or Engine Control Module (ECM), which processes data provided by the various sensors. Vehicle systems commonly employ serial communication buses that are coupled to multiple sensors (and/or other devices) to communicate commands and data, In such shared bus networks, each device coupled to the bus is often assigned a unique address such that commands and data can be broadcast over the shared bus, but only processed by one or more intended recipient devices independently from all the devices on the shared bus. Other shared bus implementations might not necessarily require a unique address, and instead include a select or enable signal for each device coupled to the shared bus.
For example, bus protocols commonly employed in automotive applications, such as the Inter-Integrated Circuit (“I2C”) bus and the Local Interconnect Network (“LIN”) bus, require that each device attached to the bus be identified by a unique address. Such buses might further specify other features also be assigned to each device, for example that devices coupled to the bus are operated as either a master device or a slave device. Other commonly used automotive bus protocols, such as the Serial Peripheral Interface (“SPI”) bus include one or more select or enable signal lines to select and independently communicate with a specific device coupled to the bus. Such a select or enable signal requires the inclusion of extra wiring on the bus and the allocation of additional controller input port(s) on devices coupled to the shared bus, thus increasing the cost and complexity of the bus and related devices.
For bus protocols that employ device addressing, several manners of assigning addresses to devices are possible. Some mechanisms allow setting device addresses by device users after the time of device manufacture. For example, employing switches (e.g., a dual inline package or “DIP” switch), a jumper block connector or other similar devices would allow a user to set signal values to a controller of each device, and thus set the device address. Such mechanisms require additional components, which can increase cost. Further, at least some probability of user error is introduced that could prevent proper operation. Alternatively, a user might be able to program an address of a device, for example by downloading software to a controller of the device (e.g., “flashing” the device) that then programs the device address. Such in-circuit programming typically might require more complex and more expensive controllers and related components and increase software complexity.
Other mechanisms set device addresses at the time of device manufacture. For example, some systems might program each device with a unique address value in read-only memory (ROM) or one-time programmable (OTP) memory that might be used as the device address. Alternatively, signal values to a controller of a device might be set (or “hard-wired”) during manufacture by placing (or not placing) circuit components on the circuit board (e.g., to set a resistor divider value, place jumpers, etc,), cutting circuit board traces or wiring to the controller, or other similar means. However, such mechanisms increase manufacturing complexity and might require additional physical circuit board space.
Therefore, an improved manner of configuring devices coupled to a shared bus, for example, assigning a unique device address, is envisioned.